package com.cskaoyan.javase.doublearray.initialization3;

/**
 * @description: 二维数组的初始化
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 二维数组声明完毕后 要初始化才能够使用
 * 1，静态初始化
 * 显式的给二维数组赋值
 * arr = new int[][]{};  长度为0的二维数组 可以作为方法的返回值，避免返回null，避免空指针异常
 * 数组（包括一维和多维）的静态初始化的简写方式，必须和声明一起使用
 *
 *
 *
 * 2，动态初始化
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        //声明一个二维数组
        int[][] arr;

        /*//1，静态初始化数组
        //最长的静态初始化方式
        arr = new int[][]{{1}, {1, 2, 3}, {3}};
        //静态初始化可以简写
        //arr = {{1},{2}};Array initializer is not allowed here
        //简写形式必须和声明一起使用
        int[][] arr2 = {{1}, {2}};*/

        //2，动态初始化数组
        //不论是静态还是动态初始化数组，根本目的是让jvm能够根据我们的语句 开辟空间
        //动态初始化的方式一
        arr = new int[3][];
        //这个二维数组能不能用？不能立刻使用，因为数组中装的是null
        //如果想用，你必须自己手动给元素赋值一个数组，这种方式比较麻烦
        //这个新数组长度就你自己定，比较灵活

        //arr = new int[][3]; 错误的
        //动态初始化方式二
        arr = new int[3][2];
        //这个二维数组能不能直接用？可以直接用，因为数组已经有了
        //这种方式比较省事，但是不灵活，二维数组中的每个小数组长度都是一样





    }
}
